<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>


    </style>
</head>

<body>
    <script>
        // reduce去重利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数，第二个参数是item的初始值
        // 通过id 数组去重
        // reduce去重 第一遍
        const arr = [
            { id: '1', value: '乐乐' },
            { id: '2', value: '博博' },
            { id: '9', value: '淘淘' },
            { id: '4', value: '哈哈' },
            { id: '1', value: '乐乐' },
            { id: '5', value: '鹏鹏' },
            { id: '1', value: '月月' },
            { id: '3', value: '淘淘' },
        ]
        var str = {};
        const arr1 = arr.reduce(function (item, val) {
            str[val.id] ? '' : str[val.id] = true && item.push(item)
            return item
        }, [])
        console.log(arr1);
        console.log(arr);
        const strs = {};
        const arrr = arr.reduce(function (item, id) {
            strs[id.id] ? '' : strs[id.id] = true && item.push(item)
            return item
        }, [])
        console.log(strs);
        // reduce去重 第二遍
        const ss = [
            {
                id: '5',
                name: '张三',
                age: 18
            },
            {
                id: '9',
                name: '刘德华',
                age: 22

            }, {
                id: '5',
                name: '张三',
                age: 18
            }, {
                id: '6',
                name: '李四',
                age: 33
            }, {
                id: '10',
                name: '慧慧',
                age: 15
            },
        ]
        const sss = {};
        const res = ss.reduce(function (key, val) {
            sss[val.id] ? '' : sss[val.id] = true && key.push(key)
            return key
        }, [])
        console.log(res);
        console.log(sss);

        // reduce数组去重第三遍
        const list = [
            {
                num: 1,
                id: 1,
                msg: '潘'
            }, {
                num: 2,
                id: 2,
                msg: 'zhao'
            }, {
                num: 3,
                id: 3,
                msg: '叮当'
            }, {
                num: 1,
                id: 1,
                msg: '潘'
            },
            {
                num: 2,
                id: 2,
                msg: 'zhao'
            },
            {
                num: 7,
                id: 4,
                msg: 'mi'
            }

        ]
        const monkey = {};
        const baby = list.reduce(function (key, value) {
            monkey[value.id] ? '' : monkey[value.id] = true && key.push(key)
            return key
        }, [])
        console.log(list);
        console.log(baby);
    </script>
    <script>
        // 利用foreach  1 every方法去重id
        const arr3 = [
            {
                name: 'bb',
                id: 1
            },
            {
                name: 'aa',
                id: 2
            },
            {
                name: 'dd',
                id: 3
            }, {
                name: 'cc',
                id: 5
            }, {
                name: 'dd',
                id: 3
            },
        ]
        var temp = [];
        function str() {
            arr3.forEach(function (a) {
                var t = temp.every(function (b) {
                    return a.id !== b.id
                })
                t ? temp.push(a) : ''
            })
            return temp
        }
        var newArr = str()
        console.log(temp);
        // 利用foreach  2 every方法去重id
        const hhh = [
            {
                name: 'qq',
                id: 0
            }, {
                name: 'ww',
                id: 1
            }, {
                name: 'qq',
                id: 0
            }, {
                name: 'ee',
                id: 2
            }, {
                name: 'rr',
                id: 3
            }, {
                name: 'hy',
                id: 7
            },
        ]
        var yy = [];
        function bb() {
            hhh.forEach(function (x) {
                var cc = yy.every(function (mm) {
                    return x.id !== mm.id
                })
                cc ? yy.push(x) : ''
            })
            return yy
        }
        var newArr = bb()
        console.log(yy);
        // 利用foreach 3  every方法去重id
        const vv = [
            {
                kkk: 'zs',
                id: 1
            }, {
                kkk: 'ww',
                id: 2
            }, {
                kkk: 'zs',
                id: 1
            },
            {
                kkk: 'rt',
                id: 4
            },
        ]
        // const ref = [];
        // function arr4() {
        //     vv.forEach(function (e) {
        //         var oo = ref.every(function (w) {
        //             return e.id !== w.id
        //         })
        //         oo ? ref.push(e) : ''
        //     })
        //     return ref
        // }
        // var newArr = arr4()
        // console.log(ref);
        const ref = [];
        function arr4() {
            vv.forEach(function (a) {
                var cc = ref.every(function (b) {
                    return a.id !== b.id
                })
                cc ? ref.push(a) : ''
            })
            return ref
        }
        var newArr = arr4()
        console.log(ref);
        const sw = [];
        function xxx() {
            vv.forEach(function (q) {
                var bb = sw.every(function (b) {
                    return q.id !== b.id
                })
                bb ? sw.push(q) : ''
            })
        }
        var newArr = xxx()
        console.log(sw);
    </script>
    <script>
        //  利用  indexOf  filter
        // filter() 方法创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有元素，
        // array.filter(function (currentValue, index, arr), thisValue)
        var arra = [1, 5, 6, 0, 7, 3, 0, 5, 9, 5, 5];
        // function s(arra){
        //     return arra.filter(function(item,index){
        //         return arra.indexOf(item,0)===index
        //     })
        // }
        // console.log(s(arra));
        // function d(arra) {
        //     return arra.filter(function (item, id) {
        //         return arra.indexOf(item, 0) === id
        //     })
        // }
        // console.log(d(arra));
        // function qq(arra) {
        //     return arra.filter(function (item, id) {
        //         return arra.indexOf(item, 0) === id
        //     })
        // }
        // console.log(qq(arra));
        //    function aaaa(arra){
        //        return arra.filter(function(item,id){
        //            return arra.indexOf(item,0)===id
        //        })
        //    }
        //    console.log(aaaa(arra));
        function bb(arra) {
            return arra.filter(function (a, id) {
                return arra.indexOf(a, 0) === id
            })
        }
        console.log(bb(arra));
        function sdd(arra) {
            return arra.filter(function (item, id) {
                return arra.indexOf(item, 0) === id
            })
        }
        console.log(sdd(arra));
    </script>
</body>

</html>